"""
通知配置模型定义
包含钉钉机器人通知配置相关模型
"""
from datetime import datetime
from . import db
from ..timezone_utils import now as timezone_now

class NotificationConfig(db.Model):
    """通知配置模型"""
    __tablename__ = 'notification_configs'
    
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False, index=True)
    name = db.Column(db.String(200), nullable=False)  # 配置名称
    description = db.Column(db.Text)  # 配置描述
    
    # 钉钉机器人配置
    webhook_url = db.Column(db.String(500), nullable=False)  # 钉钉机器人webhook地址
    secret = db.Column(db.String(200))  # 钉钉机器人加签密钥
    
    # 通知设置
    is_enabled = db.Column(db.Boolean, default=True, nullable=False)  # 是否启用
    
    # 时间戳
    created_at = db.Column(db.DateTime, default=timezone_now, nullable=False)
    updated_at = db.Column(db.DateTime, default=timezone_now, onupdate=timezone_now)
    
    # 关联用户
    user = db.relationship('User', backref='notification_configs')
    
    def to_dict(self):
        """转换为字典格式"""
        return {
            'id': self.id,
            'user_id': self.user_id,
            'name': self.name,
            'description': self.description,
            'webhook_url': self.webhook_url,
            'secret': self.secret,
            'is_enabled': self.is_enabled,
            'created_at': self.created_at.isoformat() if self.created_at else None,
            'updated_at': self.updated_at.isoformat() if self.updated_at else None
        }

    def __repr__(self):
        return f'<NotificationConfig {self.name}>'